package com.yuxi.Service;

import java.util.List;

import javax.servlet.http.HttpSession;

import org.apache.catalina.User;
import org.springframework.stereotype.Service;

import com.yuxi.Entity.PowerRole;
import com.yuxi.Entity.PrisonRole;
import com.yuxi.Entity.PrisonStructure;
import com.yuxi.Entity.UserInfo;
import com.yuxi.Entity.UserPosition;
import com.yuxi.Entity.UserStructure;
import com.yuxi.Entity.UserView;
import com.yuxi.Request.Page;
import com.yuxi.Request.UserQuery;
import com.yuxi.view.UserPowerView;

/**
 * @author wyd
 * */
@Service
public interface UserService {
	/**
	 * 用户登录
	 * @param  userAccount
	 * @param  pwd
	 * @author wyd
	 * */
	public UserInfo userLogin(String userAccount, String pwd,String ip);
	
	/***
	 * 获取登陆用户信息
	 * */
	public UserInfo getCurLoginUser(HttpSession session);
	
	/**
	 * 创建一个用户
	 * */
	public UserInfo userCreateOneUser(UserInfo createUser,UserInfo user,String ip,int positionId,String positionName,int structureId,String structureName,int roleId);
	
	/**
	 * 获取用户所在的监区
	 * */
	public PrisonStructure getUserPrisonArea(int userId);
	
	/**
	 * 获取部门下的用户
	 * */
	public List<UserInfo> userGetStructUserList(int structId);
	public Page<UserView> getStructUserList(int structId,UserQuery userQuery,Page<UserView> p);
	/**
	 * 获取用户所在监区安全分口|| 科室
	 * */
	public List<PrisonStructure> userGetsafetyPortList(UserInfo u);
	
	/**
	 * 根据条件获取创建的用户
	 * */
	public Page<UserView> getUserList(UserQuery userQuery,UserInfo u,Page<UserView> p);
	

	/**
	 *  获取用户的角色权限
	 * @param u
	 * @return
	 */
	public PowerRole getRolePower(UserInfo u);
	
	
	/**
	 * 获取用户所在监区 监狱领导
	 * @param u
	 * @return
	 */
	public List<UserInfo> getPrisonHeaderList(UserInfo u);
	
	/**
	 * 获取监狱长
	 * @param u
	 * @return
	 */
	public List<UserInfo> getPrisonHeader(Integer pId);
	
	/**
	 * 获取分管领导
	 * @param u
	 * @return
	 */
	public List<UserInfo> getPrisonViceHeader(Integer pId);
	
	/**
	 * 根据ID停用用户
	 * @param userId
	 * @return
	 */
	public boolean stopUserById(Integer userId,UserInfo user);	
	/**
	 * 根据ID启用用用户
	 * @param userId
	 * @return
	 */
	public boolean enableUserById(Integer userId, UserInfo user);
	
	
	/**
	 * 获取用户所有权限信息
	 * @param user
	 * @return UserPowerView
	 */
	public UserPowerView getUserPowerViewByUserId(UserInfo user);
	
	

	/**
	 * 获取当前登陆用户的权限
	 * @return
	 */
	public UserPowerView curLoginUserPowerView(HttpSession session);
	
	/**
	 * 管理修改用户 及权限
	 * 
	 * */
	public boolean userModify(UserInfo user,Integer roleId);
	
	
	/**
	 * 创建两个用户AB角
	 * @param userA
	 * @param userB
	 * @return
	 */
	public boolean createMapATOB(UserInfo userA,UserInfo userB);
	
	/**
	 * 修改两个用户AB角
	 * @param userA
	 * @param userB
	 * @return
	 */
	public boolean upDateMapATOB(UserInfo doUser,UserInfo modifiUser);
	
	


	/**
	 * 修改用户资料及权限
	 * @param user
	 * @param roleId
	 * @param userPosition
	 * @return
	 */
	public boolean userModify(UserInfo user, Integer roleId, UserPosition userPosition);
	public boolean userModify(UserInfo user, Integer roleId, UserPosition userPosition,int structureId,String  structureName);
	
	/**
	 * 通过用户A获取用户B
	 * @param userA
	 * @return
	 */
	public UserInfo getUserBByUserA(UserInfo userA);
	
}
